Pandas 和 Numpy的标准差计算结果不一样 | 您所在的位置:网站首页 › excel average函数和计算器算的不一样 › Pandas 和 Numpy的标准差计算结果不一样 |
Pandas 和 Numpy的标准差计算竟然不一样!
今天计算CV(变异系数),其定义如下:
C
V
=
σ
/
μ
.
CV= σ/μ.
CV=σ/μ.
其中σ是标准差, μ是均值。
用pandas来实现对df的CV计算,为了验证准确性,抽了一列用np.array.std()检验,发现二者计算结果竟然不一样! #pandas cur_res['mean']=df.mean().values cur_res['std']=df.std().values cur_res['cv']=df.std().values/array.mean().values #pandas结果(单独拿了一行) #mean 0.006429 #std 0.002504 #cv 0.389481 #numpy a=np.array([0.0062,0.0059,0.0065,0.0081,0.0015,0.0073,0.0095]) a_std=a.std() a_mean=a.mean() a_cv=a.std()/a.mean() #numpy结果 #mean 0.006429 #std 0.002318 #cv 0.36059根据结果可见,mean计算一致,但std这里出现不一致,导致最后cv结果也不同。 经查,在默认情况下, numpy计算的为总体标准偏差,ddof=0。 使用场景为:拥有所有数据的情况下,计算所有数据的标准差时使用,即最终除以n,而非n-1。pandas计算的为样本标准偏差,ddof=1。 使用场景为:只有部分数据但需要求得总体的标准差时使用,当只有部分数据时,根据统计规律,除以n时计算的标准差往往偏小,因此需要除以n-1,即n-ddof。需要根据实际数据情况来选择合适的函数。 在我的数据里,样本量偏少,仅是几次实验结果,并不是总体数据,而我想要得到总体分布的离散程度,则需要使用n-1的标准差计算方式。所以以pandas计算结果为准。 |
CopyRight 2018-2019 实验室设备网 版权所有 |